/*
 author : lhm
 time: 2017.07.25
 global data
 */

//各个线程的通信连接状态 
var workerObj_normal_state = false;			//true 连接成功 false 连接失败或者没有连接
var workerObj_save_state = false;
var workerObj_update_state = false;

//解决 应答式通信 有回答才能继续发下一次
//另外需要注意:若应答等待超过一个数量值,需要提示(或是其他操作)
// var normal_allow = true;		//是否允许发送指令 发送后必须设置为false 等待有返回后重新设置为true
// var save_allow = true;
// var update_allow = true;
// var normal_no_response = 0;		//累计没有应答的次数 超时判断
// var save_no_response = 0;
// var update_no_response = 0;

//此处用于存放全局变量
var data_login = false;						//登陆状态
var data_login_user = "admin";				//登陆名
var data_login_password = "123456";			//登陆密码
var data_login_robotID = "1";				//当前机器人

// 机器人控制相关
var data_servo = "off";			//使能 on off
var data_model = "T1";			//模式 T1 T2 A E
var data_runstate = "stop";		//运行状态 run pause stop
var data_debug = "step";		//当前调试模式 step loop 单步 连续
// 高创专用
var data_fileLoad = false;		//是否有加载文件

var data_coord = "JOINT";		//当前坐标 JOINT WORLD TOOL USER
var data_tool_num = 1;			//工具坐标系编号
var data_user_num = 1;			//用户坐标系编号

var data_speed_t = 0;			//手动速度
var data_speed_a = 0;			//自动速度

var data_message = "message init : welcome to use tcr hmi;";		//所有消息

var data_point_joint = [];		//当前关节点
var data_point_world = [];		//当前世界点
var data_axis_limit;			//轴限位
var data_extAxis_limit;			//外部轴限位
var data_point_3d = [];			//3D仿真 弧度

// io数据相关
var data_di;					//数字 输入端口 true false
var data_do;					//数字 输出端口
var data_si;					//数字 安全输入
var data_so;					//数字 安全输出
var data_ai;					//模拟 输入
var data_ao;					//模拟 输出 flaot
var data_r;						//普通寄存器 float
var data_gr;					//全局 普通寄存器
var data_pr;					//点位寄存器
var data_pl;					//码垛寄存器
var data_timer;					//时间寄存器
var data_g;						//通用信息 : 多机器人信息

// 文件相关
var data_current_project;		//当前工程名
var data_file_name;				//打开的文件名
var data_file_code;				//打开的文件的代码
var data_file_pointData;		//打开的文件的点数据 [0] = {name:,type:,val:}

var data_runFile_name;			//当前运行名 [0] = name
var data_runFile_line;			//行号 [0] = line
var data_runFile_code;			//运行的代码 [0] = code
var data_relatedFile_name;		//关联文件名

// 波形图
var data_axisTorque;			//电机力矩
var data_axisSpeed;				//电机速度
var data_axisPosition;			//电机位置
var data_axisFollowOffset;		//电机跟随误差

// test ui update
var tSpeedCount = 40;//计数用 限制t1速度的更新频率
var minTime = null;
var maxTime = null;
var averageTime = null;
var averageT = 0;
var averageCount = 0;
var timeoutTest = setInterval(function() {
	// var begin = new Date();
	var begin = performance.now();//高精度时间戳
	// console.time("Array initialize");

	// console.log(data_servo);
	// console.log(data_model);
	// console.log(data_runstate);
	// console.log(data_debug);
	// console.log(data_coord);

	// console.log(data_speed_t);
	// console.log(data_speed_a);
	// console.log(data_point_joint);
	// console.log(data_point_world);
	// console.log(data_message);
	
	if(data_servo == "on"){
		$('#servoBtn').css("color",'#1ABC9C');
	}
	else{
		$('#servoBtn').css("color",'white');
	}

	//运行状态
	if(data_runstate == "run"){
		$("#runstate").html("运行");
		$("#runstate").css("color",'#1ABC9C');
	}
	else if(data_runstate == "stop"){
		$("#runstate").html("停止");
		$("#runstate").css("color",'#C63C26');
	}
	else{
		$("#runstate").html("暂停");
		$("#runstate").css("color",'#FDB933');
	}

	//模式
	if(data_model=="T1" || data_model=="T"){
		$("#optionsRadios1").css("color","#1ABC9C").children('img').attr("src","img/green_radio.png");
		$("#optionsRadios1").siblings().css("color","white").children('img').attr("src","img/white_radio.png");
	} 
	else if(data_model=="A"){
		$("#optionsRadios2").css("color","#1ABC9C").children('img').attr("src","img/green_radio.png");
		$("#optionsRadios2").siblings().css("color","white").children('img').attr("src","img/white_radio.png");
	}

	//速度
	if(tSpeedCount==50){
		$(".data_num").html(data_speed_t+"%");
		$("#size").css("background-size",data_speed_t+"%"+" "+100+"%");
		$('#size')[0].value=data_speed_t;
		tSpeedCount=0;
	}
	else{
		tSpeedCount++;
	}

	//点位
	var $Inch=new Array(7);
	var objName;
	var objNum;
	for(var i=0;i<7;i++){
		var a=i+1;
		$Inch[i]=$("#jog_j"+a+"_val").html();
		// console.log($Inch[i]);
		if(isNaN($Inch[i])){
			$(".Speed_of_progress"+a).css("left","-"+122+"%");
		}else{
			$Inch[i]=parseFloat($Inch[i]);
			$Inch[i]=($Inch[i]-300)/6-22;
			// console.log($Inch[i]);
			$(".Speed_of_progress"+a).css("left",$Inch[i]+"%")
		}
	}

	for(var i = 0;i<data_point_world.length;i++)
	{
		if(i<7)
		{
			objNum = i+1;
			objName = "#jog_w"+ objNum +"_val";

			var point_N=Number(data_point_world[i]);
			point_N=point_N.toFixed(3);

			$(objName).html(point_N);
		}
	}

	for(var i = 0;i<data_point_joint.length;i++)
	{
		if(i<8)
		{
			objNum = i+1;
			objName = "#jog_j"+ objNum +"_val";

			var point_N2=Number(data_point_joint[i]);
			point_N2=point_N2.toFixed(3);

			$(objName).html(point_N2);
		}
	}

	//消息
	messageShow(data_message);
	
	//时间统计
	// var end = new Date();
	var end = performance.now();

	var time = end-begin;

	if(minTime && maxTime){
		if(time < minTime){
			minTime = time;
		}
		if(time > maxTime){
			maxTime = time;
		}

		
		averageT++;
		averageTime =+ time;

		averageCount++;
		if(averageCount == 150)//30s
		{
			console.log("max time : "+maxTime);
			console.log("min time : "+minTime);
			console.log("average c : "+averageT);
			console.log("average time : "+(averageTime/averageT));
			averageCount = 0;
		}
	}
	else{
		minTime = time;
		maxTime = time;
	}
	// 
	// console.timeEnd("Array initialize");//Chrome等浏览器自带
	
}, 200);

